//
//  SC_ControllerPush.h
//  SeacitySDK
//
//  Created by 郭健 on 2020/8/30.
//  Copyright © 2020 Seacity. All rights reserved.
//

//属性传值关键字
#define SCProperty @"property"
//修改初始化方法关键字
#define SCInitWith @"initWith"


#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

#pragma mark -传值类型
typedef NS_ENUM(NSInteger , SC_PushControllerType) {
    SCPushNoParam     = 0, //不需要传值
    SCPushProperty   = 1, //只有属性传值
    SCPushInit     = 2, //重写了init方法传值
    SCPushOther  = 3, //其他，混合方式传值(既有属性又有initWith)等
};

@interface SC_ControllerPush : UIViewController

+ (SC_ControllerPush *)SC_ControllerPushShare;

#pragma mark -不需要传值的话直接调这个接口
/**
 不需要传值

 @param fromCon 当前页面
 @param toCon push到的页面
 @param projName 工程名字(toCon为OC类时projName传nil)
 */
- (void)pushFromController:(UIViewController *)fromCon toCon:(NSString *)toCon projName:(NSString *)projName;

#pragma mark -需要传值的话直接调这个接口

/**
 通用页面跳转-需要传值时

 @param fromCon 当前页面
 @param toCon push到的页面
 @param type push页面传值类型
 @param paramDic 传值字典
 @param projName 工程名字(toCon为OC类时projName传nil)
 */
- (void)pushFromController:(UIViewController *)fromCon toCon:(NSString *)toCon paramType:(SC_PushControllerType)type param:(NSDictionary *)paramDic projName:(NSString *)projName;

/**
 根据类名字获取其对应的UIViewController
 @param conName 指定的类名字
 @param type 页面传值类型
 @param paramDic 传值字典
 @param projName 工程名字(conName为OC类时projName传nil)
 @return 类对象
 */
- (UIViewController *)getViewControllerWithConName:(NSString *)conName paramType:(SC_PushControllerType)type param:(NSDictionary *)paramDic projName:(NSString *)projName;

@end

NS_ASSUME_NONNULL_END
